Computer networks and network devices have grown increasingly complex and continue to experience increasing loads. This is especially true for network devices connected to the Internet. Networks providing services over the Internet may experience load conditions of millions of concurrent users. Under such circumstances, service providers often require considerable proof that devices and applications will operate correctly when deployed under such conditions.
Traditionally, stress testing of network devices involves generating random packets and sending the packets to the devices. The random packets typically contain no meaningful data, and do not accurately simulate how real users acts. Some network testing tools record sample sequences of user activity and then play the sequences back to the subject device many times. These testing methodologies fall short of actually simulating realistic user activity. For instance, real-world users do not send meaningless packets at regular intervals. Nor do millions of concurrent users merely repeat the same sequence of behavior.